﻿namespace Busconeitor.Domain.Utils.SimpleList
{
    using System;

    [Serializable]
    public class Node
    {
        private IComparable _info;
        private Node _next;

        /// <summary>
        /// Constructor por defecto.
        /// </summary>
        public Node()
        {
        }

        /// <summary>
        /// Crea un nodo incializando todos los atributos en base a parámetros.
        /// </summary>
        /// <param name="x"></param>
        /// <param name="p"></param>
        public Node(IComparable x, Node p)
        {
            _info = x;
            _next = p;
        }

        /// <summary>
        /// Accede a la dirección del sucesor
        /// </summary>
        /// <returns>la dirección del nodo sucesor</returns>
        public Node GetNext()
        {
            return _next;
        }

        /// <summary>
        /// Cambia la dirección del sucesor
        /// </summary>
        /// <param name="p">dirección del nuevo sucesor</param>
        public void SetNext(Node p)
        {
            _next = p;
        }

        /// <summary>
        /// Accede al valor del info         
        /// </summary>
        /// <returns>el valor del info</returns> 
        public IComparable GetInfo()
        {
            return _info;
        }

        /// <summary>
        /// Cambia el valor del info.
        /// </summary>
        /// <param name="p">p nuevo valor del info</param>
        public void SetInfo(IComparable p)
        {
            _info = p;
        }

        /// <summary>
        /// Convierte el contenido del nodo en String.
        /// </summary>
        /// <returns>el contenido del nodo convertido en String</returns>
        public override String ToString()
        {
            return _info.ToString();
        }
    }
}
